package com.jourwon.util.tree;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*;

import java.io.Serializable;
import java.util.List;

/**
 * 树节点对象
 *
 * @author JourWon
 * @since 2021/3/1
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TreeNode implements Serializable {

    private static final long serialVersionUID = 5142229988108511748L;

    /**
     * 当前节点id
     */
    private String id;

    /**
     * 当前节点的数据
     */
    private String value;

    /**
     * 父节点id
     */
    private String parentId;

    /**
     * 父树对象(方便遍历树节点设置勾选状态)
     */
    @JsonIgnore
    @JSONField(serialize = false)
    private TreeNode parentTreeNode;

    /**
     * 是否拥有子节点
     */
    private Boolean hasChildNode;

    /**
     * 子节点列表
     */
    private List<TreeNode> childNodes;

    /**
     * 是否勾选
     */
    private Boolean checked = false;

    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }

}
